<template>
  <div class="outer">
    {{ list }}
    <h1>App</h1>
    <button @click="destroyApp">卸载App组件</button>
    <!-- <List @atguigu="getListData" /> -->
    <!-- 通过ref可以拿到当前子组件的组件实例 -->
    <List ref="listComp" />
  </div>
</template>

<script>
import _ from "lodash";
import List from "./components/List";
export default {
  name: "App",
  data() {
    return {
      list: [],
    };
  },
  mounted() {
    //使用 组件实例.$on 给某个组件绑定自定义事件(如果给组件设置一个ref属性,则获取的是当前被设置的组件实例)
    this.$refs.listComp.$on("atguigu", this.getListData);
  },
  components: {
    List,
  },
  //自定义事件主要用来接收子组件的传参(子向父传值)
  
  //1.我们拿到值以后可以保存在自己的data中,data中尽量保存一个新的值(需要拷贝)
  // this.list = [...list];
  //2.如果数据比较复杂,我们需要对数据进行深拷贝(使用lodash的包提供的方法)
  methods: {
    getListData(list) {
      // 深拷贝
      this.list = _.cloneDeep(list);
    },
    destroyApp() {
      this.$destroy();
    },
  },
};
</script>

<style>
.outer {
  height: 400px;
  background-color: aqua;
}
</style>